﻿#ifndef BUSINESSINIT_H
#define BUSINESSINIT_H

#include <QJsonObject>
#include <atomic>

class BusinessInit
{
public:
    static BusinessInit& getInstance();


    // 初始化所有的模块
    bool InitModules();

    // 保存全局设置
    void saveGlobalConfig();

    // close program
    void closeProgram(QJsonObject& in, QJsonObject& out);

    // 删除拷贝构造函数和拷贝赋值操作符
    BusinessInit(BusinessInit const&) = delete;
    BusinessInit& operator=(BusinessInit const&) = delete;

    // 获取当前的程序是否停止
    bool isStop();
private:

    BusinessInit();
    // 读取本地配置文件
    void readLocalConfigure(QJsonObject& in, QJsonObject& out);
    // 在指定的位置生成一个密钥文件
    void generateAESKeyFile(QJsonObject& in, QJsonObject& out);
    // 连接并登录
    void connectAndLoginTargetServer(QJsonObject& in, QJsonObject& out);
    // login target server
    bool loginTargetServer(const std::string& account, const std::string& password);

    // 程序是第一次运行，初始化本地配置文件
    void InitConfigFile();

    std::atomic<bool> stop;
};

#endif // BUSINESSINIT_H
